/*
 *  Copyright (C) 2011  social-tourist.org
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package org.socialtourist.web.client.widgets;

import java.util.ArrayList;

import java.util.List;

import org.socialtourist.web.client.SocialTouristServiceAsync;
import org.socialtourist.web.shared.data.Need;
import org.socialtourist.web.shared.data.SocialProject;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class ProjectNeedsPanel extends Composite {

	private List<ProjectNeedsCheckBox> needs;
	private VerticalPanel panel;
	private SocialProject project;
	private Widget mailGroup;

	public ProjectNeedsPanel(Widget mailGroup) {
		needs = new ArrayList<ProjectNeedsCheckBox>();
		this.mailGroup = mailGroup;
		panel = new VerticalPanel();
							
		initWidget(panel);
	}

	public void setProject(SocialProject project) {
		this.project = project;
	}

	public void update() 
	{
		assert (project != null && project.getNeeds() != null);
		needs.clear();
		List<Need> newNeeds = project.getNeeds();
		panel.clear();
		
		for (Need need : newNeeds) 
		{
			ProjectNeedsCheckBox checkbox = new ProjectNeedsCheckBox(need);
			panel.add(checkbox);
			needs.add(checkbox);
		}
		
		if (newNeeds.size() > 0)
			panel.add(mailGroup);
		
	}

	public List<Need> getSelectedNeeds() {
		List<Need> result = new ArrayList<Need>();
		for (ProjectNeedsCheckBox checkbox : needs) 
		{
			if (checkbox.isChecked())
				result.add(checkbox.getNeed());
		}
		return result;
	}

}
